package com.lj.sys.service;

import cn.hutool.core.collection.CollUtil;
import com.lj.mp.standard.StandardService;
import com.lj.sys.entity.SysUserRole;

import java.util.Collections;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 用户角色关联表 服务类
 * </p>
 *
 * @author lj
 * @since 2024-12-10 17:08:40
 */
public interface SysUserRoleService extends StandardService<SysUserRole> {

    /**
     * 根据角色id 删除与该角色关联的 用户角色关联信息
     *
     * @param roleId 角色id
     */
    default void deleteByRoleId(Long roleId) {
        this.remove(lambdaQueryWrapper()
                .eq(SysUserRole::getRoleId, roleId));
    }

    /**
     * 刷新用户与角色的关系
     *
     * @param userId     用户id
     * @param roleIdList 角色id列表 如果是空得会删除该用户的所有角色
     */
    void refresh(Long userId, Set<Long> roleIdList);

    default List<SysUserRole> getByUserId(Long userId) {
        return list(lambdaQueryWrapper().eq(SysUserRole::getUserId, userId));
    }

    /**
     * 获取用户的所有角色id
     *
     * @param userId 用户id
     */
    default List<Long> getRoleIdByUserId(Long userId) {
        List<SysUserRole> userRoleList = getByUserId(userId);
        if (CollUtil.isEmpty(userRoleList)) {
            return Collections.emptyList();
        }
        return userRoleList.stream().map(SysUserRole::getRoleId).toList();
    }

}